#include <iostream>
#include <future>
#include <thread>
#include <memory>


int Add(int x, int y)
{
    return x + y;
}

int main()
{
    // std::shared_ptr<std::promise<int>> pro = std::make_shared<std::promise<int>>(Add); // 乱写！
    std::shared_ptr<std::promise<int>> pro = std::make_shared<std::promise<int>>();

    std::future<int> res = pro->get_future();

    std::thread t([&pro](){
        int sum = Add(10, 20);
        pro->set_value(sum); // promise 设置结果
    });

    std::cout << res.get() << std::endl; // future 获取结果

    t.join();
    return 0;
}